切片器下拉默认显示最新日期最佳做法
昨天有人在群里问下拉切片器怎么默认显示最新日期,在微软让切片器下拉状态下支持自定义之前,这可能是最好的做法,但是,个人并不推荐这种做法,除非业务真的无理取闹。。。
先来回顾下之前要让切片器下拉状态时永远显示最新日期的做法,
日期表中新建一列,这里以年月为例,当为最新年月时,显示为Cur Month,否则显示正常年月的值
Default =
var v = MAX( 'DimDate'[Year Month Number] )
return IF( 'DimDate'[Year Month Number] = v, "Cur Month", 'DimDate'[Year Month])
之后对该例按年月的数值字段进行排序,这样Default列就可以按年月的先后顺序显示了。
我们还需要写一个最大日期的度量值
YearMonth.MAX =
CALCULATE(
MAX( 'DimDate'[Date] ),
REMOVEFILTERS( 'DimDate'))
这样基本上就解决了切片器默认值永远是最新日期的问题。但是总会遇到一些追求完美的业务人员说你这个方案不行,看起来不方便,无法一眼知道当前数据是什么日期。
解决起来也比较简单,透明图层。具体就是在切片器上方放一个卡片图,当是Cur Month时才显示值,否则不显示值且背景为透明。
新建一个度量,当为Cur Month时才显示值,否则显示空字符
CurMonth.Show =
IF( MAX( 'DimDate'[Default] ) = "Cur Month", MAX( 'DimDate'[Year Month] ), "" )
新建一个度量,当为Cur Month时背景为白色,否则为透明
CurMonth.Color =
IF( MAX( 'DimDate'[Default] ) = "Cur Month" , "#FFFFFF", "#FFFFFF00" )
这样卡片图上的值就会根据切片器的选择来进行显示和隐藏了。
接下来就更简单了,调整卡片图的大小和位置,然后放到切片器下拉框的上方就可以了,当然,最好也设置下维护层顺序。这样就变相地实现了自定义标签的显示。
既然提到了自定义标签,就不得不提今年微软在自带图表功能上做的最好的功能了,比如,如果用新式切片器上的标签功能,就可以很容易实现拖放的值和显示的值不一样,只是新式切片器目前不支持下拉。
再比如12月的更新中支持显示更多地标签,就这有了更多的玩法,只是12月更新发布好几天了,微软还未修复12月软件包下载的错误。。。